function NuderRequest(nuderform, list) {
	
	if(!nuderform.formType)
		nuderform = new NuderHTMLForm(nuderform);
	
	function doSubmit(mhead, k) {
		var instance = nuderform.createInstance();
		var listenerKey = ServiceUtil.generateListenerKey();		

		var params = [];
		
		params[params.length] = new TypedObject(Types.STRING, nuderform.formType);		//form type
		params[params.length] = new TypedObject(Types.STRING, mhead.getMethodName());	//method name
		
		if (!nuderform.useNativeProgress)
			params[params.length] = new TypedObject(Types.toArray(Types.STRING), listenerKey); //non native listener key
		
		var req = new RequestHeadInit(TITTValues.GET, "/titt" + mhead.getNonMethodPath(), HeadFactory.EMPTY);
		var mtitt = new MethodHeadInit("requestHelper", params, mhead.getParams(), req);

		instance.action = mtitt.getPath();

		function end() {
			instance.stop();
			k(null);
		}
		
		function start() {
			instance.submit();
		}
		
		if (!nuderform.useNativeProgress) {
			var doEnd = end;
			var doStart = start;
			end = function(){
				TITT.getService().lazyUnregister(listener, doEnd);
			}
			start = function() {
				TITT.getService().register(listener, listenerKey, doStart);
			}
		}

		var listener = ServiceUtil.createListener(list, end);
		instance.listener = listener;
		start();

	}
	
	this.writeToStream = function(mhead, k) {
		ServiceUtil.init(function(){
			doSubmit(mhead, k);
		});
		
	}
	
}


/*function NuderRequest(form, list) {
	
	function doSubmit(mhead, k) {
		var listenerKey = ServiceUtil.generateListenerKey();		
		var params = [new TypedObject(Types.STRING, mhead.getMethodName()), new TypedObject(Types.toArray(Types.STRING), listenerKey)];
		var mtitt = new MethodHeadInit("requestHelper", params, mhead.getParams(), new RequestHeadInit(TITTValues.GET, "/titt" + mhead.getNonMethodPath(), HeadFactory.EMPTY));

		var targets = ServiceUtil.createTargets(form);

		ServiceUtil.setupForm(form, mtitt.getPath());

		function end(suc) {
			alert("end")
			TITT.getService().lazyUnregister(lis, function() {
				if(!suc) {
					ServiceUtil.cleanUp(targets, form);				
					k(null);
					return;
				}

				var doc, c;
	
				try {
					if (targets[1].contentDocument) 
						doc = targets[1].contentDocument;
					if (targets[1].contentWindow) 
						doc = targets[1].contentWindow.document;
							
					c = doc.body.innerHTML;
				}
				catch(err) {
					c = null;
				}

				ServiceUtil.cleanUp(targets, form);			
				k(c);		
			});
		}
	
		var lis = ServiceUtil.createListener(list, end, targets[1]);

		TITT.getService().register(lis, listenerKey, function(){
			form.submit();
		});
	}
	
	this.writeToStream = function(mhead, k) {
		ServiceUtil.init(function(){
			doSubmit(mhead, k);
		});
		
	}
	
}
*/